// 导入mysql模块
const mysql = require('mysql2/promise'); // mysql2模块

const fs = require('fs'); // 导入文件系统模块

// 数据库配置
var mysqlConfig = null;

if (process.env.MYSQL_CONFIG) {
    console.log('MYSQL_CONFIG:', process.env.MYSQL_CONFIG);
    // 尝试从环境变量中获取数据库配置
    try {
        // 判断是否为js模块文件
        mysqlConfig = require(process.env.MYSQL_CONFIG);
    } catch (error) {
        try {
            // 判断是否为json文件
            mysqlConfig = JSON.parse(fs.readFileSync(process.env.MYSQL_CONFIG, 'utf8'));
        }
        catch (error) {
            try {
                // 判断是否是JSON字符串
                mysqlConfig = JSON.parse(process.env.MYSQL_CONFIG);
            }
            catch (error) {
                throw new Error('Invalid MYSQL_CONFIG');
            }
        }
    }
    // 判断有效变量
    if (!mysqlConfig) {
        throw new Error('Invalid MYSQL_CONFIG');
    }
} else {
    // 从项目配置文件中获取数据库配置
    try {
        mysqlConfig = require('../config/conf.js').mysqlConfig;
    } catch (error) {
        throw new Error('Invalid MYSQL_CONFIG');
    }
}

module.exports = mysql.createPool(mysqlConfig);
